package com.zs.blog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zs.blog.model.dto.AuthorityEditDTO;
import com.zs.blog.model.dto.AuthoritySearchDTO;
import com.zs.blog.model.entity.Authority;
import com.zs.blog.model.vo.AuthorityLabelListVO;
import com.zs.blog.model.vo.AuthorityListVO;
import com.zs.blog.model.vo.PageInfoVO;

import java.util.List;

/**
 * @Title: IAuthorityService
 * @Author zs
 * @Package com.zs.blog.service
 * @Date 2025/9/2 21:18
 * @description: 系统资源权限服务层接口
 */
public interface IAuthorityService extends IService<Authority> {

    /**
     * 获取系统资源权限层级信息列表
     *
     * @return 系统资源权限层级信息列表
     */
    List<AuthorityLabelListVO> listAuthorityLevelInfo();

    /**
     * 获取分页的权限列表信息
     *
     * @param pageNum  页码
     * @param pageSize 每页数据
     * @return 分页的系统资源权限列表
     */
    PageInfoVO<AuthorityListVO> listAuthorityWithPagination(Integer pageNum, Integer pageSize);

    /**
     * 新增权限信息
     *
     * @param authorityEditDTO 接收权限新增或修改的参数实体类
     */
    void addAuthority(AuthorityEditDTO authorityEditDTO);

    /**
     * 删除权限信息
     *
     * @param authorityIds 要删除的数据ID列表
     */
    void deleteAuthority(List<Long> authorityIds);

    /**
     * 通过搜索条件查询分页的角色列表
     *
     * @param authoritySearchDTO 权限查询条件参数接收类
     * @return 分页的权限列表
     */
    PageInfoVO<AuthorityListVO> listAuthorityBySearchCondition(AuthoritySearchDTO authoritySearchDTO);
}
